home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 15 / CU Amiga Magazine's Super CD-ROM 15 (1997)(EMAP Images)(GB)[!][issue 1997-10].iso / CUCD / Utilities / Post / init.ps < prev    next >
Encoding:
Text File  |  1997-04-19  |  7.2 KB  |  225 lines

  1. %! Post V1.7 initialisation file
  2. % (C) Adrian Aylward 1989, 1991
  3. %
  4. % You may freely copy, use, and modify this file
  5. %
  6. % This file should be run before most programs
  7. % I fixed the /ISOLatin1Encoding vector, changed the version to 48.1 and added
  8. % some defines for ugly code, Christian Eibl
  9.  
  10. % Version string, real number for programs that check it
  11.  
  12. /version (48.1) def
  13.  
  14. % Ignore CTRL/D
  15.  
  16. <04> cvn {} def
  17.  
  18. % A dummy status dictionary
  19.  
  20. /statusdict 10 dict dup begin
  21. /waittimeout 0 def
  22. /checkpassword { 0 eq } bind def
  23. /product (Post V1.7) def
  24. end def
  25.  
  26. % A dummy server dictionary
  27.  
  28. /serverdict 5 dict dup begin
  29. /exitserver { pop } bind def
  30. end def
  31.  
  32. % The internal dictionary
  33.  
  34. %/internaldict { pop null } dup 1 5 dict put def
  35. %1183615869 internaldict begin
  36. %/StemSnapLength 12 def
  37. %end
  38.  
  39. % A scratch string
  40.  
  41. /=string 256 string def
  42.  
  43. % ISO Latin 1 encoding vector
  44.  
  45. systemdict
  46. /ISOLatin1Encoding [
  47.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  48.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  49.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  50.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  51.  /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
  52.  /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period
  53.  /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon
  54.  /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H
  55.  /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft
  56.  /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
  57.  /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z
  58.  /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
  59.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
  60.  /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave
  61.  /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef
  62.  /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown
  63.  /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
  64.  /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
  65.  /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph
  66.  /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
  67.  /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute
  68.  /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute
  69.  /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth
  70.  /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
  71.  /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
  72.  /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae
  73.  /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute
  74.  /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex
  75.  /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex
  76.  /udieresis /yacute /thorn /ydieresis
  77. ] def
  78. % Run a program with save and restore
  79.  
  80. /runsave
  81. { /saveobject save def
  82.   run
  83.   saveobject restore
  84. } bind def
  85.  
  86. % Run a program displaying its name
  87.  
  88. /runprog
  89. { dup print (\n) print
  90.   runsave
  91. } bind def
  92.  
  93. % New cache parameters ops
  94.  
  95. systemdict
  96. /setcacheparams
  97. { counttomark 1 ge { dup setcachelimit } if
  98.   cleartomark
  99. } bind put
  100.  
  101. systemdict
  102. /currentcacheparams
  103. { mark cachestatus 6 { exch pop} repeat dup
  104. } bind put
  105.  
  106. % Load a font file.  Build the file name string from the font name, prefix
  107. % and suffix strings.  We pop the dictionary stack first, so that the
  108. % contents of any additional entries on it can't interfere with the font
  109. % definition - e.g. if it uses the bind operator.  Then we try to open the
  110. % file.  If it opens OK we execute it; if the open fails we return without
  111. % error: presumabaly we don't have the font.  Before returning we restore the
  112. % dictionary stack.
  113.  
  114. systemdict
  115. /loadfont
  116. { 1 index =string copy                         % Prefix:
  117.   length                                       % length
  118.   3 index =string 2 index 100 getinterval cvs  % Prefix:name
  119.   length add                                   % length
  120.   1 index =string 2 index 100 getinterval copy % Prefix:name.suffix
  121.   length add                                   % length
  122.   =string exch 0 exch getinterval              % Truncate to length
  123.   mark countdictstack 2 sub
  124.       { currentdict end } repeat               % Pop dict stack
  125.   counttomark 1 add index                      % Get the file name
  126.   { fontfile } stopped                         % Try to open the file
  127.   { pop }                                      % Can't open it, ignore
  128.   { cvx exec }                                 % Opened OK, execute it
  129.   ifelse
  130.   counttomark { begin } repeat pop             % Restore dictionary stack
  131.   pop pop pop pop                              % Pop file name and arguments
  132. } bind put
  133.  
  134. % Find a font.  If it is not there we try in order:
  135. %
  136. %    Load       PSFonts:name
  137. %    Load       CGFonts:PS/name.psfont
  138. %    Load       PSFonts:OtherFonts/name
  139. %    Substitute DefaultFont
  140. %
  141. % If none of these succeeds, the result will an invalidfont error.
  142.  
  143. systemdict /.findfont systemdict /findfont get put
  144.  
  145. systemdict
  146. /findfont
  147. {
  148. % Comment out the next 3 lines if you don't have a PSFonts: directory
  149.   dup FontDirectory exch known not             % Not in FontDirectory?
  150.   { dup (PSFonts:) () loadfont                 % Try to load from PSFonts:
  151.   } if
  152. % Comment out the next 3 lines if you don't have the Gold Disk CG fonts
  153. % dup FontDirectory exch known not             % Not in FontDirectory?
  154. % { dup (CGFonts:PS/) (.psfont) loadfont       % Try CGFonts:PS
  155. % } if
  156. % Comment out the next 3 lines if you don't have a PSFonts:OtherFonts
  157.   dup FontDirectory exch known not             % Not in FontDirectory?
  158.   { dup (PSFonts:OtherFonts/) () loadfont      % Try PSFonts:OtherFonts
  159.   } if
  160. % Substitute DefaultFont
  161.   dup FontDirectory exch known not             % Not in FontDirectory?
  162.   { dup userdict /DefaultFontName get ne       % Not the DefaultFont
  163.     { pop userdict /DefaultFontName get        % Substitue DefaultFont
  164.       dup systemdict /findfont get exec pop    % Recurse so it gets loaded
  165.     }
  166.     if
  167.   }
  168.   if
  169.   dup FontDirectory exch known not             % Not in FontDirectory?
  170.   { pop /DummyFont } if                        % Fall back on DummyFont
  171.   .findfont                                    % If errors, will fail now
  172. } bind put
  173.  
  174. % Select a font
  175.  
  176. systemdict
  177. /selectfont
  178. { exch findfont exch
  179.   dup type /arraytype eq
  180.   { makefont }
  181.   { scalefont }
  182.   ifelse
  183.   setfont
  184. } bind put
  185.  
  186. % Define a dummy font - prints out big dots ...
  187.  
  188. /DummyFont 10 dict dup begin
  189. /FontName /DummyFont def
  190. /FontMatrix [0.001 0 0 0.001 0 0] def
  191. /FontType 3 def
  192. /FontBBox [0 -300 500 700] def
  193. /Encoding StandardEncoding def
  194. /BuildChar
  195. { pop pop
  196.   500 0 50 0 450 400 setcachedevice
  197.   250 200 200 0 360 arc fill
  198. } bind def
  199. /Painttype 0 def
  200. end definefont pop
  201.  
  202. % Establish the dummy font as the default, as some fonts need it to
  203. % define themselves.
  204.  
  205. /DefaultFontName /DummyFont def
  206.  
  207. % Uncomment the following line to use FunkyFont as the default font
  208.  
  209. /DefaultFontName /FunkyFont def
  210.  
  211. % Uncomment the following line to use Courier as the default font
  212.  
  213. %/DefaultFontName /Courier def
  214.  
  215. % Some defines for ugly code
  216.  
  217. /letter {} bind def
  218. /legal {} bind def
  219. /ledger {} bind def
  220. /note {} bind def
  221. /a5 {} bind def
  222. /a4 {} bind def
  223. /a3 {} bind def
  224. /landscape {} bind def
  225.